from pydantic import BaseModel
from typing import  List
class VolumeParam(BaseModel):
    deviceId: int
    type: str
    volume: List[int]

class ExpireObj(BaseModel):
    # 有效期启用/禁用
    enable: bool
    # 开始日期（日期格式，如：2021-06-06）
    beginDate: str| None = None
    # 截止日期（日期格式，如：2021-06-06）
    endDate: str| None = None

class TaskParam(BaseModel):
    # 任务ID，编辑时不传
    taskId: int | None = None
    # 任务名称
    taskName: str
    # 广播音量（0~100）
    volume: int
    # 广播的设备列表
    deviceIds: List[int]
    # 广播播放的文件列表（数组元素的顺序就是播放的顺序）
    fileIds: List[int]
    # 广播启用/禁用
    enable: bool
    # 执行模式（“Sigle“, “EveryDay”,”EveryWeek”,分别代表单次、每天、每周）
    execMode: str
    # 执行模式为“EveryWeek“时有效，1～6代表周一～周六，0代表周日
    weekDay: List[int]| None = None
    # 任务开始时间（时间格式，如10:08:08）
    startTimeOfDay: str
    # 任务有效期
    expireObj: ExpireObj
    # 播放模式（“seconds“: 时长，单位为秒；”times“: 次数）
    timeMode: str
    # timeMode=“seconds“ 填时长，timeMode=“times“, 填次数
    modeContent: int
    # 任务类型（realtime：实时任务，timed：定时任务）默认值：timed
    taskType: str| None = "timed"
    # 广播类型（mic：麦克风，file：文件）默认值：file，类型为mic时，取的是服务器的麦克风数据
    bcType: str| None = "file"

    def jsonformat(self, obj):
        return {
            "taskName": self.taskName,
            "volume": self.volume,
            "deviceIds": self.deviceIds,
            "fileIds": self.fileIds,
            "enable": self.enable,
            "execMode": self.execMode,
            "weekDay": self.weekDay,
            "startTimeOfDay": self.startTimeOfDay,
            "expireObj": {
                "enable": self.expireObj.enable,
                "beginDate": self.expireObj.beginDate,
                "endDate": self.expireObj.endDate
            },
            "timeMode": self.timeMode,
            "modeContent": self.modeContent,
            "taskType": self.taskType,
            "bcType": self.bcType,
        }